// 节流函数
export function throttle(func, wait, immediate) {
  var timeout;
  return function () {
    let context = this;
    let args = arguments;
    let later = function () {
      timeout = null;
      if (!immediate) func.apply(context, args)
    }
    let callNow = immediate && !timeout;
    clearTimeout(timeout);
    timeout = setTimeout(later, wait);
    if (callNow) func.apply(context, args)
  }
}

// 防抖函数
export function debounce(fn, delay = 500) {
  // timer 是在闭包中的
  let timer = null;
  
  return function() {
      if (timer) {
          clearTimeout(timer)
      }
      timer = setTimeout(() => {
          fn.apply(this, arguments)
          timer = null
      }, delay)
  }
}
